package com.hhxy.request;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;

/**
 * 模拟请求数据的编码和解码过程
 */
public class URLDemo {

    public static void main(String[] args) throws Exception {
        String username = "张三";//模拟用户输入数据

        /*-------------------第一步：模拟浏览器编码-----------------------*/
        //1. URL编码
        String encode = URLEncoder.encode(username, "utf-8");
        System.out.println(encode);//输出：%E5%BC%A0%E4%B8%89
        /*---------------------------------------------------------------*/

        /*-------------------第二步：模拟Tomcat解码-----------------------*/
        //2. URL解码
        String decode = URLDecoder.decode(encode, "ISO-8859-1");
        //备注：这一步在Tomcat内部是写死的无法进行外部操作
        /*---------------------------------------------------------------*/

        /*-----------第三步：Servlet直接默认使用UTF-8进行编码-------------*/
        System.out.println(decode); //此处打印的是对应的乱码数据：å¼ ä
        /*---------------------------------------------------------------*/

        /*-----从第三步下手----*/
        //3. 转换为字节数据,编码
        byte[] bytes = decode.getBytes("ISO-8859-1");
        for (byte b : bytes) {
            System.out.print(b + " ");
        }
        //此处打印的是:-27 -68 -96 -28 -72 -119
        //4. 将字节数组转为字符串，解码
        String s = new String(bytes, "utf-8");
        System.out.println(s); //此处打印的是张三
    }
}
